package com.dream.plugin.simpledao.core;

import java.util.*;

public enum SContainer {
    INSTANCE;

    // 存放每个数据库表的实体类表名 Class.getName() -> tableName
    private Map<String,String> tableNames;

    // 存放每个数据库表的实体类Id名称 tableName -> tableIdName
    private Map<String, String> tableIdNames;

    // 存放每个数据库表的实体类的字段列表 tableName -> tableColumns
    private Map<String, List<String>> tableColumns;

    /**
     * 初始化容器
     */
    SContainer(){
        tableNames = new HashMap<>();
        tableIdNames = new HashMap<>();
        tableColumns = new HashMap<>();
    }


    /**
     * 保存数据库表信息
     * @param tablePojo
     * @param tableName
     * @param idName
     * @param columns
     */
    public void saveTableInfo(Class tablePojo, String tableName, String idName, List<String> columns){
        tableIdNames.put(tableName, idName);
        tableColumns.put(tableName, columns);
        tableNames.put(tablePojo.getName(), tableName);
    }

    /**
     * 获取数据库字段列表
     * @param tableName
     * @return
     */
    public List<String> getTableColumns(String tableName){
        return new ArrayList<>(tableColumns.get(tableName));
    }

    /**
     * 获取表格id
     * @param tableName
     * @return
     */
    public String getTableIdName(String tableName){
        return  tableIdNames.get(tableName);
    }

    /**
     * 获取数据库表名
     * @param pojo
     * @return
     */
    public String getTableName(Class pojo){
        return tableNames.get(pojo.getName());
    }

    /**
     * 获取所有容器中的数据库表名称
     * @return
     */
    public Collection<String> getTableName(){
        return tableNames.values();
    }
}
